package entity

import "time"

// MCPServiceParam 服务参数实体
type MCPServiceParam struct {
	ID           string `json:"id" gorm:"primaryKey;type:varchar(64);not null;column:id"`            // 主键
	ServiceID    string `json:"service_id" gorm:"type:varchar(64);not null;index;column:service_id"` // 服务ID
	Name         string `json:"name" gorm:"type:varchar(128);not null;column:name"`                  // 参数名
	Type         string `json:"type" gorm:"type:varchar(32);not null;column:type"`                   // 参数类型
	Required     bool   `json:"required" gorm:"type:bool;not null;default:false;column:required"`    // 是否必填
	DefaultValue string `json:"default" gorm:"type:varchar(256);column:default"`                     // 默认值
	Description  string `json:"desc" gorm:"type:varchar(256);column:desc"`                           // 描述
	CreatedAt    int64  `json:"created_at" gorm:"autoCreateTime:milli;column:created_at"`            // 创建时间
	UpdatedAt    int64  `json:"updated_at" gorm:"autoUpdateTime:milli;column:updated_at"`            // 更新时间
}

// MCPServiceParam 服务参数实体
type MCPServiceVersion struct {
	ID          string `json:"id" gorm:"primaryKey;type:varchar(64);not null;column:id"`            // 主键
	ServiceID   string `json:"service_id" gorm:"type:varchar(64);not null;index;column:service_id"` // 服务ID
	Version     string `json:"version" gorm:"type:varchar(32);not null;column:version"`             // 版本号
	SQL         string `json:"sql" gorm:"type:text;not null;column:sql"`                            // SQL语句
	Parameters  string `json:"parameters" gorm:"type:varchar(256);column:parameters"`               // 参数列表
	Description string `json:"description" gorm:"type:varchar(256);column:description"`             // 描述
	IsActive    bool   `json:"is_active" gorm:"type:bool;not null;default:false;column:is_active"`  // 是否激活
	CreatedAt   int64  `json:"created_at" gorm:"autoCreateTime:milli;column:created_at"`            // 创建时间
	UpdatedAt   int64  `json:"updated_at" gorm:"autoUpdateTime:milli;column:updated_at"`            // 更新时间
}

// MCPService MCP服务实体
type MCPService struct {
	ID           int64     `json:"id" gorm:"primaryKey;column:id"`                           // 主键ID
	Name         string    `json:"name" gorm:"size:100;not null;column:name"`                // 服务名称
	Type         string    `json:"type" gorm:"size:20;not null;column:type"`                 // 服务类型
	Host         string    `json:"host" gorm:"size:100;not null;column:host"`                // 主机地址
	Port         int       `json:"port" gorm:"not null;column:port"`                         // 端口号
	Status       string    `json:"status" gorm:"size:20;not null;column:status"`             // 状态
	Config       string    `json:"config" gorm:"type:text;column:config"`                    // 配置信息
	Description  string    `json:"description" gorm:"size:200;column:description"`           // 描述
	SQL          string    `json:"sql" gorm:"type:text;column:sql"`                          // SQL语句
	ConnectionID string    `json:"connection_id" gorm:"size:100;column:connection_id"`       // 连接ID
	CreatedAt    time.Time `json:"created_at" gorm:"not null;column:created_at"`             // 创建时间
	UpdatedAt    time.Time `json:"updated_at" gorm:"not null;column:updated_at"`             // 更新时间
	LastUsedAt   time.Time `json:"last_used_at" gorm:"column:last_used_at"`                  // 最后使用时间
	Tags         string    `json:"tags" gorm:"size:200;column:tags"`                         // 标签
	IsActive     bool      `json:"is_active" gorm:"not null;default:true;column:is_active"`  // 是否激活
	IsSystem     bool      `json:"is_system" gorm:"not null;default:false;column:is_system"` // 是否系统服务
}

func (MCPServiceParam) TableName() string {
	return "mcp_service_params"
}
func (MCPServiceVersion) TableName() string {
	return "mcp_service_versions"
}
func (MCPService) TableName() string {
	return "mcp_services"
}

// ServiceStatus 服务状态
type ServiceStatus struct {
	ID        int64     `json:"id"`
	Status    string    `json:"status"`
	LastCheck time.Time `json:"last_check"`
	Error     string    `json:"error,omitempty"`
}

// ServiceMetrics 服务指标
type ServiceMetrics struct {
	ID           int64     `json:"id"`
	CPUUsage     float64   `json:"cpu_usage"`
	MemoryUsage  float64   `json:"memory_usage"`
	RequestCount int64     `json:"request_count"`
	ErrorCount   int64     `json:"error_count"`
	ResponseTime float64   `json:"response_time"`
	LastUpdated  time.Time `json:"last_updated"`
}

// ServiceLog 服务日志
type ServiceLog struct {
	ID        int64     `json:"id"`
	ServiceID int64     `json:"service_id"`
	Level     string    `json:"level"`
	Message   string    `json:"message"`
	CreatedAt time.Time `json:"created_at"`
}

// APICallDetail API调用详情
type APICallDetail struct {
	ID        int64     `json:"id"`         // 调用ID
	APIID     string    `json:"api_id"`     // API ID
	StartTime time.Time `json:"start_time"` // 开始时间
	EndTime   time.Time `json:"end_time"`   // 结束时间
	Duration  int64     `json:"duration"`   // 持续时间(毫秒)
	Status    string    `json:"status"`     // 状态
	Request   string    `json:"request"`    // 请求内容
	Response  string    `json:"response"`   // 响应内容
	Error     string    `json:"error"`      // 错误信息
	UserID    int64     `json:"user_id"`    // 用户ID
	IP        string    `json:"ip"`         // IP地址
	UserAgent string    `json:"user_agent"` // 用户代理
	CreatedAt time.Time `json:"created_at"` // 创建时间
	UpdatedAt time.Time `json:"updated_at"` // 更新时间
}
